package main

import "fmt"

// map必须初始化，只声明是没用的。通道也是。
// 不支持并发
func main() {
	var m map[int]string
	fmt.Printf("len(m): %#v\n", len(m))
	fmt.Printf("m[1]: %#v\n", m[1]) //"" 不报错！
	fmt.Printf("m[1]: %#v\n", m[1]) //"" 不报错！

	var m2 map[int]int
	fmt.Printf("len(m2): %#v\n", len(m2))
	fmt.Printf("m2[1]: %#v\n", m2[1]) //0 不报错！ - 默认零值
	fmt.Printf("m2[1]: %#v\n", m2[1]) //0 不报错！ - 默认零值

	fmt.Println("--------")
	for k, v := range m {
		fmt.Printf("%v: %v\n", k, v)
	}
	fmt.Println("--------")
	//m[3] = "aa"//FIXME nil map
	m = make(map[int]string, 5)

	m[4] = "bb"
	for k, v := range m {
		fmt.Printf("--- %v: %v\n", k, v)
	}
}
